#!/usr/bin/env node
/* 
  #! shebang指令
  后面跟路径, 可以自己写一个绝对路径,最好是些/usr/bin/env 让他自己去找
*/

/* 
自定义终端命令的过程
  1. 创建package.json文件
  2. 在需要执行的文件开头加上 shebang命令
  3. package.json配置bin字段
  4. 使用npm link 终端命令
  5. 使用配置的bin命令,就可以执行指定文件
*/

const program = require("commander");

//设置版本号
program.version(require("./package.json").version);

// 绑定command命令
const createCommands =require("./lib/core/create.js");
createCommands()
// 增加自己的可选参数
// program.option("-w, --why <why>", "我就是个描述");
// program.option("-d, --dest <dest>", "目标文件路径");
// program.option("-f --framework <framework>", "your framework");

// --help 有自带的回调函数
// program.on("--help", () => {
//   console.log("--help");
// });

// // 没法触发,不知道为什么
// program.on("--why", () => {
//   console.log("-why");
//   console.log(program._optionValues.why);
// });
// program.action((name,options,command)=>{
//   // console.log('command: ', command);
//   // console.log('options: ', options);
//   // console.log('name: ', name);
//   if(name.dest){
//     console.log(name.dest);
//   }
//   // if (options.debug) {
//   //   console.error('Called %s with options %o', command.name(), options);
//   // }
// })

// program.command('create <project> [others...]').description('clone a repository into a folder').action((project,others)=>{
//   // 这两个东西对应上面的command同名传参,第二个是一个数组
//   console.log('others: ', others);
//   console.log('project: ', project);

// })

// 解析参数
program.parse(process.argv);
// console.log(program._optionValues);
// _optionsValues

/* 
  _optionsValues:
    是options的集成对象
    注意字段名实际上是--后面的,而不是括号里面的字段

*/
//获取options参数
// console.log(program.opts());
// console.log(program._optionValues.why);
// console.log(program._optionValues.framework);
